package com.zjtaixue.mybatis_learn.mapper;

import com.zjtaixue.mybatis_learn.model.SysRole;
import com.zjtaixue.mybatis_learn.model.SysUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserMapper {
    /**
     * 通过id查询用户
     * @param id
     * @return
     */
    SysUser selectById(Integer id);

    /**
     * 查询全部用户
     * @return
     */
    List<SysUser> selectAll();

    /**
     * 根据用户id获取角色信息
     * @param userId
     * @return
     */
    List<SysRole> selectRolesByUserId(Integer userId);

    /**
     * 新增用户
     * @param sysUser
     * @returne
     */
    int insert(SysUser sysUser);

    /**
     * 新增用户使用useGenerateKeys方式
     * @param sysUser
     * @return
     */
    int insert2(SysUser sysUser);


    /**
     * 新增用户使用selectKey方式
     * @param sysUser
     * @return
     */
    int insert3(SysUser sysUser);

    /**
     * 根据主键更新
     * @param sysUser
     * @return
     */
    int updateById(SysUser sysUser);

    /**
     * 通过主键删除
     * @param id
     * @return
     */
    int deleteById(Integer id);

    /**
     * 根据用户id和角色的enable状态获取用户的角色
     * @param userId
     * @param enable
     * @return
     */
    List<SysRole> selectRolesByUserIdAndRoleEnable(@Param("userId")Integer userId, @Param("enable") Integer enable);

    /**
     * 根据用户的id和角色的enable状态获取用户的角色
     * @param user
     * @param role
     * @return
     */
    List<SysRole> selectRolesByUserAndRole(@Param("user") SysUser user,@Param("role") SysRole role);
}
